import pandas as pd
import numpy as np

# 对列进行索引
df1 = pd.DataFrame(
    data=np.random.randint(10, 100, size=(4, 6)),
    index=['小明', '小红', '小刚', '小李'],
    columns=['语文', '数学', '英语', '化学', '物理', '生物'],
)
print(df1)
print(df1.语文)  # series类型
print(df1['语文'])
# 使用两个中括号
print(df1[['语文', '数学']])  # dataframe类型
# 对行进行索引
#   -- 使用.loc[]加index来进行行索引
#   -- 使用.iloc[]加整数来进行行索引
# 不可以直接取行索引，DataFrame默认是先取列索引，再取行索引
print("\n行索引：")
print(df1.loc["小明"])  # series类型
print(df1.iloc[0])

print(df1.loc[["小明", "小红"]])  # dataframe类型
print(df1.loc[["小明"]])
print(df1.iloc[[0, 1]])
print(df1.iloc[[0]])

# 对元素索引的方法
#   -- 使用列索引
#   -- 使用行索引（iloc[3,1]相当于两个参数；iloc[[3,3]]看做一个参数）
#   --使用value属性（二维NumPy数组）
# 先取列再去取行
print("\n先去列再去行：")
print(df1['语文']['小明'])
print(df1['语文'][0])
print(df1.语文[0])
print(df1.语文.小明)

# 先取行再去取列
print("\n先去行再去列：")
print(df1.loc['小明']['语文'])
print(df1.iloc[0]['语文'])
print(df1.loc['小明'].语文)
print(df1.iloc[0].语文)

# 取元素
print("\n取元素：")
print(df1.loc['小明', '语文'])
print(df1.iloc[0, 0])
print(df1.loc['小明'].语文)
print(df1.iloc[0].语文)

# 取多个元素
print("\n取多个元素：")
print(df1.loc[['小明', '小红'], '语文'])
print(df1.iloc[[0, 1], 0])
print(df1.loc[['小明', '小红']].语文)








